home *** CD-ROM | disk | FTP | other *** search
- #!/usr/bin/perl -w
-
- # launch a gst-launch pipeline to display a visualisation of the
- # input audio.
- # make use of default input srcs.
- # visualisation plugin is specified on command line.
-
- ### packages
-
- use File::Basename;
-
-
- my (%pipes, %cfg);
-
- sub read_config
- {
- my $config_file = `echo -n ~`."/.gst";
- if (-e $config_file)
- {
- open CONFIG, $config_file;
- while (<CONFIG>)
- {
- chomp;
- s/#.*//;
- s/\s+$//;
- next unless length;
- my ($var, $value) = split (/\s*=\s*/, $_, 2);
- $cfg{$var} = $value;
- }
- if (!($cfg{AUDIOSRC}))
- {
- print "Please add an AUDIOSRC to $config_file !\n";
- }
- if (!($cfg{VIDEOSINK}))
- {
- print "Please add a VIDEOSINK to $config_file !\n";
- }
- }
- else
- {
- print "No configuration file $config_file found. You might want to create one.\n";
- }
- if (!defined $cfg{AUDIOSRC}) { $cfg{AUDIOSRC} = "osssrc"; }
- if (!defined $cfg{VIDEOSINK}) { $cfg{VIDEOSINK} = "xvimagesink"; }
- if (!defined $cfg{CVS_PATH}) { $cfg{CVS_PATH} = `echo -n ~`."/gst/cvs"; }
- }
-
- sub visualise(@)
- {
- my $vis = $cfg{VISUALIZER};
- $vis = shift() if ($#_ != -1);
- $vis = "goom" unless $vis;
-
- my $pipe;
- $pipe = $vis unless $pipe = $pipes{$vis};
-
- $command = "gst-launch-0.10 $cfg{AUDIOSRC} ! $pipe ! { queue ! ffmpegcolorspace ! $cfg{VIDEOSINK} }";
- print "Running $command\n";
- system ("PATH=\$PATH:".$cfg{CVS_PATH}."/gstreamer/tools $command");
- }
-
- ### main
-
- read_config ();
-
- %pipes = (
- "goom", "goom",
- "chart", "audioconvert ! chart",
- "synaesthesia", "synaesthesia",
- "monoscope", "audioconvert ! monoscope"
- );
-
- if ($#ARGV > 0) {
- print STDERR "Usage: gst-visualise [visualiser]\n";
- exit 1;
- }
-
- visualise(@ARGV);
-
-